package com.guojiang.guoaicodemother.core.saver;

import cn.hutool.core.util.StrUtil;
import com.guojiang.guoaicodemother.ai.model.HtmlCodeResult;
import com.guojiang.guoaicodemother.exception.BusinessException;
import com.guojiang.guoaicodemother.exception.ErrorCode;
import com.guojiang.guoaicodemother.model.enums.CodeGenTypeEnum;

/**
 * HTML 代码文件保存模板（模板方法模式-子类模板）
 *
 * @author guojiang
 */
public class HtmlCodeFileSaverTemplate extends CodeFileSaverTemplate<HtmlCodeResult> {
    
    /**
     * 子类返回代码类型
     *
     * @return CodeGenTypeEnum
     */
    @Override
    protected CodeGenTypeEnum getCodeType() {
        return CodeGenTypeEnum.HTML;
    }

    /**
     * 子类实现保存文件具体逻辑
     *
     * @param codeParserResult
     * @param baseFileDir
     */
    @Override
    protected void saveFile(HtmlCodeResult codeParserResult, String baseFileDir) {
        writeToFile(baseFileDir, "index.html", codeParserResult.getHtmlCode());
    }

    /**
     * 子类覆盖父类验证合法性逻辑
     *
     * @param codeParserResult
     */
    @Override
    protected void validateInput(HtmlCodeResult codeParserResult) {
        super.validateInput(codeParserResult);
        if (StrUtil.isBlank(codeParserResult.getHtmlCode())) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "不能保存空的 HTML 代码文件");
        }
    }
}
